package com.xiangxiangjd.kj.papersstar.service;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.xiangxiangjd.kj.papersstar.bean.User;

import org.springframework.stereotype.Service;

import java.util.Date;


/**
 * @author jinbin
 * @date 2018-07-08 21:04
 */
@Service("TokenService")
public class TokenService {
    //设置过期时间
    private static final long EXPIRE_DATE=30*60*1000;//30分钟 单位毫秒

    //个人
    public String getToken(User user) {
        String token="";
        /*token= JWT.create().withAudience(user.getId())// 将 user id 保存到 token 里面
                .sign(Algorithm.HMAC256(user.getPassword()));// 以 password 作为 token 的密钥
        return token;*/
        try {
            //过期时间 移动端缓存token登录
       //     Date date = new Date(System.currentTimeMillis()+EXPIRE_DATE);
            //秘钥及加密算法
            //Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);
            Algorithm algorithm = Algorithm.HMAC256(user.getPassword());//密钥用密码加密

            /*Algorithm.HMAC256():使用HS256生成token,密钥则是用户的密码，唯一密钥的话可以保存在服务端。
            withAudience()存入需要保存在token的信息，这里我把用户ID存入token中*/
            //携带user id，password信息，生成签名
            token = JWT.create()
                    .withAudience(user.getId())
                   // .withExpiresAt(date)
                    .sign(algorithm);
        }catch (Exception e){
            e.printStackTrace();
            return  null;
        }
        return token;
    }

}
